﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BanVeXemPhim_Presentation
{
    public partial class UserControlDanhSachVeOnline : UserControl
    {
        public UserControlDanhSachVeOnline()
        {
            InitializeComponent();
        }

        public delegate void ChonLaiLichChieu();
        public event ChonLaiLichChieu SuKienChonLaiLichChieu;

        public delegate void XuatVe(int idve);
        public event XuatVe SuKiemXuatVe;

        public delegate void HuyTatCaVe(int idxuatchieu);
        public event HuyTatCaVe SuKienHuyTatCaVeDatTruoc;

        public delegate void HuyVeDangChon(ChiTietVeDTO chiTietVeDto);
        public event HuyVeDangChon SuKienHuyVeDangChon;


        private ChiTietVeDTO[] _dsChiTietVe;
        private List<ChiTietVeDTO> ListVe; 

        public ChiTietVeDTO[] DsChiTietVe
        {
            get { return _dsChiTietVe; }
            set
            {
                _dsChiTietVe = value;
                if(_dsChiTietVe!=null)
                {
                    if (_dsChiTietVe.Length > 0)
                    {
                        ListVe=new List<ChiTietVeDTO>();
                        ListVe.AddRange(_dsChiTietVe);
                        HieuChinhDataGridView(ListVe.ToArray());
                    }
                }
            }
        }
        private void buttonChonLaiLichChieu_Click(object sender, EventArgs e)
        {
            if(SuKienChonLaiLichChieu!=null)
            {
                SuKienChonLaiLichChieu();
            }
        }

        public void HieuChinhDataGridView(ChiTietVeDTO[] dsve)
        {
            this.dataGridView1.DataSource = dsve;
            this.dataGridView1.Columns["IdGhe"].Visible = false;
            this.dataGridView1.Columns["IdVe"].Visible = false;
            if(dsve.Length>0)
                FitSize(this.dataGridView1);
        }

        private void FitSize(DataGridView gv)
        {
            Size fitSize = new Size();
            fitSize.Width =gv.Columns[0].Width*5+50;

            // get fit height
            fitSize.Height = gv.ColumnHeadersVisible ? gv.ColumnHeadersHeight : 0;
            if (gv.Rows.Count < 9)
                fitSize.Height += gv.Rows[0].Height * (gv.Rows.Count);
            else
                fitSize.Height += gv.Rows[0].Height * 9;
            gv.Size = fitSize;
        }

        //Thanh toán xuất vé.
        private void buttonXuatVe_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.RowCount > 0)
            {
                int index = -1;
                if (this.dataGridView1.RowCount > 0)
                    index = this.dataGridView1.CurrentRow.Index;
                if (index >= 0)
                {
                    if (SuKiemXuatVe != null)
                    {
                        SuKiemXuatVe(ListVe[index].IdVe);
                        ListVe.RemoveAt(index);
                        HieuChinhDataGridView(ListVe.ToArray());
                        MessageBox.Show("Thanh toán thành công !!");
                    }
                }
                else
                {
                    MessageBox.Show("Bạn chưa chọn chi tiết vé !!!");
                }
            }
            else
                MessageBox.Show("Không có vé đặt trước !!");
        }

        //huỷ tất cả vé đặt online.
        private void buttonHuyTatCa_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.RowCount > 0)
            {
                int index = this.dataGridView1.CurrentRow.Index;
                if (index >= 0)
                {
                    if (SuKienHuyTatCaVeDatTruoc != null)
                    {
                        SuKienHuyTatCaVeDatTruoc(ListVe[0].IdXuatChieu);
                        ListVe.Clear();
                        HieuChinhDataGridView(ListVe.ToArray());
                        MessageBox.Show("Huỷ vé thành công !!!");
                    }
                }
                else
                {
                    MessageBox.Show("Bạn chưa chọn chi tiết vé !!!");
                }
            }
            else
                MessageBox.Show("Không có vé đặt trước !!");

        }

        //Huỷ vé đang chọn.
        private void buttonHuyVeDangChon_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.RowCount > 0)
            {
                int index = this.dataGridView1.CurrentRow.Index;
                if (index >= 0)
                {
                    if (SuKienHuyVeDangChon != null)
                    {
                        SuKienHuyVeDangChon(ListVe[index]);
                        ListVe.RemoveAt(index);
                        HieuChinhDataGridView(ListVe.ToArray());
                        MessageBox.Show("Huỷ vé thành công!!!");
                    }
                }
                else
                {
                    MessageBox.Show("Bạn chưa chọn chi tiết vé !!!");
                }
            }
            else
                MessageBox.Show("Không có vé đặt trước !!");
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int index = this.dataGridView1.CurrentRow.Index;
            if(index>=0)
            {
                CapNhatKhungThongTinVe(_dsChiTietVe[index]);
            }
        }

        public void CapNhatKhungThongTinVe(ChiTietVeDTO chiTietVeDto)
        {
            this.textBoxCMND.Text = chiTietVeDto.Cmnd;
            this.textBoxCot.Text = chiTietVeDto.Cot.ToString();
            this.textBoxHang.Text = chiTietVeDto.Hang.ToString();
            this.textBoxRapChieu.Text = chiTietVeDto.RapChieu;
            this.textBoxHoTen.Text = chiTietVeDto.HoTen;
        }

        private void UserControlDanhSachVeOnline_Load(object sender, EventArgs e)
        {
        }
    }
}
